package cn.luncene;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
import org.junit.Test;

/**
 * @author Administrator
 * @Title: 萧萧
 * @ProjectName lucene
 * @Description: 标准分析器的分词器效果
 * @date 2018/9/26 19:52
 */
public class testTokenStream {
    @Test
    public void test() throws Exception{
        //创建一个标准分析器对象
        Analyzer analyzer = new StandardAnalyzer();
        //获取tokenStream对象
        //第一个参数：域名 随便给一个
        //第二个参数：要分析的文本内容
        TokenStream tokenStream = analyzer.tokenStream("test","The Spring Framework provides a comprehensive programming and configuration model.");
        //添加一个引用，可获得每个关键词,效果同指针一样，指向每个关键词
        CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);
        //添加一个偏移量的引用，记录了关键词的开始位置和结束位置
        OffsetAttribute offsetAttribute = tokenStream.addAttribute(OffsetAttribute.class);
        //将指针调整到列表的头部,否则会报异常,因为添加引用时，不能确定引用的位置
        tokenStream.reset();
        //遍历关键词列表，通过incrementToken判断是否结束
        while(tokenStream.incrementToken()){
            //关键词的起始位置
            System.out.println("start->"+offsetAttribute.startOffset());
            //获取关键词
            System.out.println(charTermAttribute);
            //关键词的结束位置
            System.out.println("end->"+offsetAttribute.endOffset());
        }
        tokenStream.close();
    }
}
